// 上传进度回调
export interface ProgressCallback {
  loaded: number;
  total: number;
}

// 上传参数
export interface uploadParamsType {
  // 文件对象
  file: File;
  // 文件名--- todo文件在云端的路径
  fileName?: '';
  // 最大文件大小字节  todo 如果超出该文件大小，自动采用切片上传
  maxSize?: number;
  // 切片大小字节 文件基于该大小进行切片
  partSize?: number;
  // 切片上传队列个数
  queueLength?: number;
  // 上传地址 todo传输服务需要
  uploadUrl: string;
  // 合并地址 todo传输服务需要
  mergeUrl?: string;
  // 上传进度回调
  onUploadProgress?: (params: ProgressCallback) => void;
  // 中断上传
  onCancel?: (params: any) => void;
}

export interface uploadArgumentsType {
  uploadType: string;
  instance: any;
  bucketName?: string;
  params: uploadParamsType;
}

// 对象存储类型
export enum ObjectStorageType {
  // 直传服务器
  NORMAL = 'normal',
  // oss
  OSS = 'oss',
  // obs
  OBS = 'obs',
  // minio
  MINIO = 'minio',
  // aws s3
  AWS = 'aws',
}

// 实例化类型
export interface instanceParamsType {
  type: ObjectStorageType;
  // AK
  accessKey?: string;
  // SK
  secretKey?: string;
  // STS-token
  securityToken?: string;
  // 服务端点
  endPoint?: string;
  // oss region
  region?: string;
  // 桶名 直传服务器无需传递该参数
  bucketName?: string;
  // sdk额外参数
  sdkOtherParams?: object;
  // sdk库 --- 使用者自己传入，可控制项目中包的大小。
  sdkObject?: any;
}
